From: Jasper St. Pierre Date: Sat, 1 Dec 2012 01:27:27 +0000 (-0500) Subject: st-private: Don't create attr lists if we don't need them X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5330 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=7e5f1fe41104dfcf4ca2a104651441ae49ee5865;p=gnome-shell.git st-private: Don't create attr lists if we don't need them Decorations are fairly uncommon in gnome-shell, so it's worthwhile to avoid effort creating empty attr lists. This can also help prevent a relayout. https://bugzilla.gnome.org/show_bug.cgi?id=689400 --- diff --git a/src/st/st-private.c b/src/st/st-private.c index bab1d3c31..cd4e52ac2 100644 --- a/src/st/st-private.c +++ b/src/st/st-private.c @@ -173,7 +173,7 @@ _st_set_text_from_style (ClutterText *text, ClutterColor color; StTextDecoration decoration; - PangoAttrList *attribs; + PangoAttrList *attribs = NULL; const PangoFontDescription *font; gchar *font_string; StTextAlign align; @@ -186,26 +186,30 @@ _st_set_text_from_style (ClutterText *text, clutter_text_set_font_name (text, font_string); g_free (font_string); - attribs = pango_attr_list_new (); - decoration = st_theme_node_get_text_decoration (theme_node); - if (decoration & ST_TEXT_DECORATION_UNDERLINE) - { - PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE); - pango_attr_list_insert (attribs, underline); - } - if (decoration & ST_TEXT_DECORATION_LINE_THROUGH) + if (decoration) { - PangoAttribute *strikethrough = pango_attr_strikethrough_new (TRUE); - pango_attr_list_insert (attribs, strikethrough); + attribs = pango_attr_list_new (); + + if (decoration & ST_TEXT_DECORATION_UNDERLINE) + { + PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE); + pango_attr_list_insert (attribs, underline); + } + if (decoration & ST_TEXT_DECORATION_LINE_THROUGH) + { + PangoAttribute *strikethrough = pango_attr_strikethrough_new (TRUE); + pango_attr_list_insert (attribs, strikethrough); + } + /* Pango doesn't have an equivalent attribute for _OVERLINE, and we deliberately + * skip BLINK (for now...) + */ } - /* Pango doesn't have an equivalent attribute for _OVERLINE, and we deliberately - * skip BLINK (for now...) - */ clutter_text_set_attributes (text, attribs); - pango_attr_list_unref (attribs); + if (attribs) + pango_attr_list_unref (attribs); align = st_theme_node_get_text_align (theme_node); if(align == ST_TEXT_ALIGN_JUSTIFY) {